package com.zyh.study.ForestPlus;

import java.util.concurrent.TimeUnit;

/**
 * security-trade-platform-
 *
 * @author yuanHua.zhang
 * @since 2025-09-08 16:37
 */
public interface CacheService {
    /**
     * 设置键值对
     * @param key 键
     * @param value 值
     */
    void set(String key, Object value);

    /**
     * 设置键值对并指定过期时间
     * @param key 键
     * @param value 值
     * @param ttl 过期时间
     * @param timeUnit 时间单位
     */
    void set(String key, Object value, long ttl, TimeUnit timeUnit);

    /**
     * 尝试设置键值对（如果键不存在）
     * @param key 键
     * @param value 值
     * @param ttl 过期时间
     * @param timeUnit 时间单位
     * @return 是否设置成功
     */
    boolean trySet(String key, Object value, long ttl, TimeUnit timeUnit);

    /**
     * 获取指定键的值
     * @param key 键
     * @param clazz 值的类型
     * @return 值
     */
    <T> T get(String key, Class<T> clazz);

    /**
     * 检查键是否存在
     * @param key 键
     * @return 是否存在
     */
    boolean exists(String key);

    /**
     * 删除指定键
     * @param key 键
     */
    void delete(String key);

    /**
     * 根据模式获取匹配的键
     * @param pattern 模式
     * @return 匹配的键集合
     */
    Iterable<String> getKeysByPattern(String pattern);
}
